package minNumber;

import java.util.HashSet;
import java.util.Set;

public class Solution {
    public int minNumber(int[] nums1, int[] nums2) {
//        Set<Integer> set = new HashSet<>();
//        int min = 10;
//        for (int i = 0; i < nums1.length; i++) {
//            set.add(nums1[i]);
//            min = Math.min(min,nums1[i]);
//        }
//        int ans = Integer.MAX_VALUE;
//        for (int i = 0; i < nums2.length; i++) {
//            if(set.contains(nums2[i])) {
//                ans = Math.min(ans,nums2[i]);
//            }else {
//                int t = Math.min(min*10+nums2[i],nums2[i]*10+min);
//                ans = Math.min(t,ans);
//            }
//        }
//        return ans;
        int mask1 = 0,mask2 = 0;
        for (int x: nums1) mask1 |= 1<< x;
        for (int x: nums2) mask2 |= 1<< x; // 把二进制的第x位变成1
        int m = mask1 & mask2; // 交集 都是 1 为 1
        if (m > 0) return Integer.numberOfTrailingZeros(m);
        int x = Integer.numberOfTrailingZeros(mask1);
        int y = Integer.numberOfTrailingZeros(mask2);
        return Math.min(x * 10 + y, y * 10 + x);
    }
}
